import Vue from 'vue'
import VueRouter from 'vue-router'
import Layout from '@/views/Layout'
import Login from '@/views/Login'
import Home from '@/views/Home'

// 自己跳自己
// 获取原型对象push函数
const originalPush = VueRouter.prototype.push

// 获取原型对象replace函数
const originalReplace = VueRouter.prototype.replace

// 修改原型对象中的push函数
VueRouter.prototype.push = function push(location){
return originalPush.call(this , location).catch(err=>err)
}

// 修改原型对象中的replace函数
VueRouter.prototype.replace = function replace(location){
return originalReplace.call(this , location).catch(err=>err)
}



Vue.use(VueRouter)
//component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')

export const baseRoutes = [
  {
    path: '/',
    name:'layout',
    component: Layout,
    meta:{
      title:'首页',
      isLogin:true,   // 是否需要登录
    },
    redirect:'/',
    children:[
        {
          path: '/',
          name:'home',
          component:Home,
          meta:{
            title:'首页',
          },
        }
        // 首页下面的动态路由  --- 动态追加
    ]
  }
]

// 不能把 返回的 myBaseRoutese 直接追加在 routes里面 追加不进去 因为 vue 路由 早就渲染过  再追加内容 它检测不到


export const routes = [
  {
    path: '/login',
    name:'login',
    component: Login
  }
]

// const router = new VueRouter({
//   mode: 'history',
//   base: process.env.BASE_URL,
//   routes
// })

// 解决 退出登录 再登录时 控制台路由命名 重复警告问题 
/*
 发现 自己的name没有重命名 那么一般时后台动态路由 导致报错的警告
 动态路由一般来说 时通过后端接口 返回 拿到的数据 然后再路由守卫 boforeEach 中进行添加
 addRoute 方法仅仅时帮您注入新的路由 并没有帮你剔除其他路由
*/


const createRouter = ()=> new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

const router = createRouter();
export function resetRouter (){
   const newRouter = createRouter();
   router.matcher = newRouter.matcher
}


export default router
